package com.san.app.service;

import java.util.Date;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import com.san.app.domain.InspectDO;
import com.san.app.vo.InspectHisAllVo;
import com.san.app.vo.InspectHisCheckedVo;
import com.san.app.vo.InspectHisVo;
import com.san.app.vo.InspectVO;
import com.san.common.utils.Query;

/**
 * 审核模板Service
 * @author SuperSR
 * @date 2019年3月26日 上午10:25:41
 *
 */
public interface InspectService {

	public InspectDO getById(Long inspectId);
	
	public List<InspectDO> list(Map<String, Object> map);
	
	public int count(Map<String, Object> map);
	
	public int save(InspectVO inspectVO);
	
	public int doEdit(InspectVO inspectVO);
	
	public int remove(Long id);
	
	public int batchRemove(Long[] ids);

	/**
	 * 根据模板内容以对应id进行核查
	 * @param datas
	 * @param inspectId
	 * @return
	 */
	public List<Object> doCheck(List<List<String>> datas,Long inspectId,Long batchNo);
	
	/**
	 * 导出信用核查excel
	 * @param inspectId
	 * @param datas
	 * @param date
	 * @param batchNo
	 */
	public void exportExcel(Long inspectId,List<Object> allResult,Date date,Long batchNo,HttpServletResponse response,Long userId);
	
	/**
	 * 执行核查操作线程
	 * @param inspectService
	 * @param inspectResultService
	 * @param datas
	 * @param inspectId
	 * @param response
	 */
	public void runCheck(InspectService inspectService,List<List<String>> datas,Long inspectId,HttpServletResponse response,Long userId);

	/**
	 * 下载核查结果文件
	 * @param fileName
	 * @param response
	 * @return
	 */
	public int downFile(String fileName,HttpServletResponse response);

	/**
	 * 核实记录
	 * @param inspectId
	 * @return
	 */
	public List<InspectHisVo> hislist(Map<String, Object> map);

	/**
	 * 核实记录总数
	 * @param inspectId
	 * @return
	 */
	public int hiscount(Map<String, Object> map);

	/**
	 * 核实成功列表
	 * @param map
	 * @return
	 */
	public List<InspectHisCheckedVo> historycheckedList(Map<String, Object> map);

	/**
	 * 核实成功总数
	 * @param map
	 * @return
	 */
	public int historycheckedListCount(Map<String, Object> map);

	/**
	 * 所有核实企业的信息
	 * @param map
	 * @return
	 */
	public List<InspectHisAllVo> historyallList(Map<String, Object> map);

	/**
	 * 所有核实企业的总数
	 * @param map
	 * @return
	 */
	public int historyallListCount(Map<String, Object> map);

}
